
//面试题 17.05.字母和数字
class Solution {
public:
    vector<string> findLongestSubarray(vector<string>& nums) {
        int n = nums.size();
        int tmp = 0 , _begin = 0,_end = -1;  //采取闭区间的记录方式[begin,end],所以一开始end=-1表示没有满足的区间
        unordered_map<int,int> m;   
        m.insert({0,-1});           
        for(int i = 0; i < n ;i++)
        {
            tmp += (isdigit(nums[i][0])==1?1:-1);
            if( m.count(tmp) && i - m[tmp] > _end - _begin + 1) 
            {
                _begin = m[tmp]+1;  //记录起始位置 ,采取闭区间的记录方式
                _end = i;           //记录终止位置
            }
            else if(!m.count(tmp)) m[tmp] = i;                            
        }
        return vector<string>(nums.begin()+_begin,nums.begin()+_end+1);
    }
};